package com.yesep.learn.design.creational.singleton;

/**
 * 线程安全的懒汉式单例模式确保单例对象仅在首次请求时创建，并且在多线程环境下也能保证线程安全。
 */
public class SafeThreadLazySingleton {

    // 单例对象
    private static SafeThreadLazySingleton instance;

    // 构造函数私有化
    private SafeThreadLazySingleton() {
        // 防止反射攻击
        if (instance != null) {
            throw new IllegalStateException("SynchronizedSingleton instance already exists!");
        }
    }

    // 提供公共的同步静态方法来获取单例对象
    public static synchronized SafeThreadLazySingleton getInstance() {
        if (instance == null) {
            instance = new SafeThreadLazySingleton();
        }
        return instance;
    }
}